//
//  OAuthViewController.swift
//  Weibo10
//
//  Created by Leon on 15/10/16.
//  Copyright © 2015年 Leon. All rights reserved.
//

import UIKit
import SVProgressHUD

class OAuthViewController: UIViewController {
    
    private lazy var webView = UIWebView()
    
    // 关闭按钮
    @objc private func closeClick() {
        
        dismissViewControllerAnimated(true, completion: nil)
        
        SVProgressHUD.dismiss()
    }
    
    /// 自动填充用户名和密码 － web 注入（以代码的方式向web页面添加内容）
    @objc private func autoFill() {
        
        let js = "document.getElementById('userId').value = '18603864562';" +
        "document.getElementById('passwd').value = '201127';"
        
        // 让 webView 执行 js
        webView.stringByEvaluatingJavaScriptFromString(js)
    }
    
    override func viewDidLoad() {
        view = webView
        
        // 设置代理
        webView.delegate = self
        
        // 设置背景 以及 导航栏属性
        vcAttribute()
        
        // 加载网页
        let request = NSURLRequest(URL: NetworkTools.shareTools.OAuthURL)
        webView.loadRequest(request)
    }
    
    
    // 设置背景 以及 导航栏属性
    func vcAttribute() {
        // 设置背景颜色，防止卡顿 --》纯代码开发
        view.backgroundColor = UIColor.whiteColor()
        
        // 设置导航栏
        title = "登陆新浪微博"
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: .Plain, target: self, action: "closeClick")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: .Plain, target: self, action: "autoFill")
    }

}

// MARK: - UIWebViewDelegate
extension OAuthViewController: UIWebViewDelegate {
    /// 开始加载
    func webViewDidStartLoad(webView: UIWebView) {
        SVProgressHUD.show()
    }
    
    /// 加载结束
    func webViewDidFinishLoad(webView: UIWebView) {
        SVProgressHUD.dismiss()
    }
    /// 将要加载请求的代理方法
    ///
    /// - parameter webView:        webView
    /// - parameter request:        将要加载的请求
    /// - parameter navigationType: navigationType，页面跳转的方式
    ///
    /// - returns: 返回 false 不加载，返回 true 继续加载
    /// 如果 iOS 的代理方法中有返回 bool，通常返回 true 很正常，返回 false 不能正常工作
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        // 1 如果网页是百度，不加载
        guard let url = request.URL where url.host == "www.baidu.com" else {
            
            return true
        }
        
        // 2 从回调的网址中，获取 code
        guard let query = url.query where query.hasPrefix("code=") else {
            
            dismissViewControllerAnimated(false, completion: nil)
            print("取消授权")
            return false
        }
        
        let code = query.substringFromIndex("code=".endIndex)

        // 3 获取AccessToken的值
        UserAccountViewModel.shareAccount.loadAccessToken(code) { (isSuccessed) -> () in
            
            if isSuccessed {
                print("成功了。。。")
                self.dismissViewControllerAnimated(false, completion: { () -> Void in
                    
                    NSNotificationCenter.defaultCenter().postNotificationName(WBSwitchViewControllerNotification, object: "welcome")
                    SVProgressHUD.dismiss()
                })
                
            } else {
                
                SVProgressHUD.showErrorWithStatus("登陆失败！")
                
                delay(1, finished: { () -> Void in
                    self.dismissViewControllerAnimated(false, completion: nil)
                    print("失败了。。。")
                })

            }
            
        }
        return false
    }
   
}













